package com.zzu.model.service;

import com.zzu.model.bean.DLS;
import com.zzu.model.bean.Delivery;
import com.zzu.model.bean.PackageItem;

import java.util.List;

import okhttp3.RequestBody;
import retrofit2.Call;
import retrofit2.http.Body;
import retrofit2.http.GET;
import retrofit2.http.POST;
import retrofit2.http.Path;

/**
 * @description:
 * @author: bytedance
 * @date: 2021-05-08 14:37
 */
public interface PackageService {


//    @GetMapping("/getDLSTask/{regionCode}")
//    String getDLSTask(@PathVariable String regionCode);

    /**
     * 获取待揽收任务列表
     * @param regionCode 地区代码，具体到区/县
     * @return json格式的揽收任务列表,每一个揽收任务包括：packageId：运单号,submitTime：提交时间,sender：寄件人,senderTel：寄件人电话,senderAddr：寄件地址
     */
    @GET("packageService/getDLSTask/{regionCode}")
    Call<List<DLS>> getDLSTask(@Path("regionCode") String regionCode);


    /**
     * 获取派送任务列表
     * @param handler 派送员id
     * @return json格式的派送任务列表，每一个派送任务包括：packageId：运单号,updateTime：更新时间,receiver：收货人,receiverTel：收货人电话,receiverAddr：收货人地址
     */
    @GET("packageService/getDeliveryTaskByHandler/{handler}")
    Call<List<Delivery>> getDeliveryTaskByHandler(@Path("handler") String handler);
//    @GetMapping("/getDeliveryTaskByHandler/{handler}")
//    String getDeliveryTaskByHandler(@PathVariable Long handler);


    /**
     * 通过运单号查询包裹信息
     * @param id
     * @return json格式的package
     */
    @GET("packageService/getPackageById/{id}")
    Call<PackageItem> getPackageById(@Path("id") String id);
//    @GetMapping("/getPackageById/{id}")
//    String getPackageById(@PathVariable String id);


    /**
     * 获得指定状态的所有包裹
     * @param status
     * @return
     */
    @GET("packageService/getPackagesByStatus/{status}")
    Call<List<PackageItem>> getPackagesByStatus(@Path("status") Integer status);
//    @GetMapping("/getPackagesByStatus/{status}")
//    String getPackagesByStatus(@PathVariable Integer status);


    /**
     * 更新包裹状态
     * id 运单号
     * status 当前状态
     * handler 处理人
     * transNodeId 所处转运节点
     * @return 更新成功返回true
     */
    @POST("packageService/updatePackageStatusById")
    Call<Boolean> updatePackageStatus(@Body RequestBody requestBody);
//    @PostMapping("/updatePackageStatusById")
//    boolean updatePackageStatusById(@RequestParam("id") String id,@RequestParam("status") Integer status,
//                                    @RequestParam("handler")Long handler,@RequestParam("transNodeId")Long transNodeId,
//                                    @RequestParam("x")Float x,@RequestParam("y")Float y);



}
